#ifndef PAGELIB_H
#define PAGELIB_H

#include <vector>
#include <string>
#include <map>
#include <utility>
#include <memory>
#include "DirScanner.h"
#include "WebPage.h"

using std::string;
using std::vector;
using std::map;
using std::pair;

class DirScanner;

class PageLib
{
public:
    PageLib(DirScanner& dirScanner)
    : _dirScanner(dirScanner)
    , _fileNames(_dirScanner.getfiles())
    // , _pages(std::make_shared<vector<string>>())
    {

    }
    

    vector<string>& getFiles()
    {
        return _fileNames;
    }

    // std::shared_ptr<vector<string>> getFiles()
    vector<string>& getPages()
    {
        return _pages;
    }

    vector<WebPage>& getWebPage()
    {
        return _WebPage;
    }

    // void store();
    // void readInfoFormFiles(){
    //     int position=0;
    //     std::cout<<_pages[6]<<std::endl;
    //     for(const auto &str : _pages){
    //         std::cout<<"1"<<std::endl;
    //         std::size_t start = str.find("<docid>")+7;
    //         std::size_t end = str.find("</docid>");
    //         std::string intStr = str.substr(start,end-start);
    //         int id = std::stoi(intStr);
    //         int len=str.size();
    //         _offsetLib.insert({id,std::make_pair(position,len)});
    //         position += len;
    //     }
    // }

    map<int, pair<int, int>>& getOffsetLib() {
        return _offsetLib;
    }
private:
    DirScanner& _dirScanner;
    // FileProcessor& _fileProcessor;
    vector<string> _fileNames;
    // std::shared_ptr<vector<string>> _pages;
    vector<string> _pages;
    map<int, pair<int, int>> _offsetLib;
    vector<WebPage> _WebPage;
};


#endif
